Docker网络、端口映射详解篇(三) | 您所在的位置:网站首页 › docker 172网段 › Docker网络、端口映射详解篇(三) |
1.docker容器的网络访问
1.1.为甚docker容器的地址是172网段
在安装好docker后默认会添加一块网卡,和kvm虚拟化一样,都会生成一块新的网卡与docker容器进行连接 语法格式: docker container inspect 容器id container可有可无 主要看最后的networks [root@docker01 ~]# docker container inspect 03d28d536053 "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "7e951c3c8d83e2c3cdf4ad6f9f14a4c788ba79dec9c3adcdcd28ac9b5da3890d", "EndpointID": "0ce5ffa54b0e09025c85f61699b080ff24a7e2dd1ac0e50f182ec7b51ccb21d8", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } 第二种方法使用exec进入容器 [root@docker01 ~]# docker exec -it blissful_moore /bin/bash root@03d28d536053:/# hostname -I 172.17.0.2首先安装好docker后会多出来一块网卡叫做docker0,与容器进行互联,运行一个镜像都会开启一个容器,一个镜像可以运行多次,每当运行后都会产生新的ip地址新的配置参数,生成ip地址后,宿主机会多一块vethxxx的网卡,vethxxx的网卡连接docker容器中的ip地址和docker网桥,docker网桥再连接宿主的docker0网卡,当docker容器需要上网时,docker0网卡就会与宿主机网卡ens33或者其他的网卡接口进行内核转发实现nat地址转换,最终由eth网卡去访问互联网,最后依次返回。 如果设置内核转发参数为0,则docker容器无法上网 [root@docker01 ~]# sysctl -a 2>/dev/null | grep ipv4 | grep forward net.ipv4.ip_forward = 1 [root@docker01 ~]# sysctl net.ipv4.ip_forward=0 [root@docker01 ~]# docker exec -it know_nginx /bin/bash root@8c98c7834ba6:/# curl -I www.baidu.com curl: (6) Could not resolve host: www.baidu.com 当内核参数设置为1则可以上网 [root@docker01 ~]# sysctl net.ipv4.ip_forward=1 root@8c98c7834ba6:/# curl -I www.baidu.com HTTP/1.1 200 OK 3.docker端口映射命令格式: docker run 选项 镜像名 参数 -p hostport:containerport //一对一映射 -p ip:hostport:containerport //指定ip映射 -p ip::containerport //映射成随机端口 -p hostport:containerport:udp //映射成udp端口 -p 81:80 -p 443:443 //指定多个 随机映射 docker run -P 3.1.一对一映射 [root@docker01 ~]# docker run -d -p 80:80 nginx 3.2.指定ip映射常用于多个容器都想用80端口 [root@docker01 ~]# ifconfig ens33:1 192.168.81.100 up [root@docker01 ~]# docker run -d -p 192.168.81.100:80:80 nginx 9f6a7971c3778f1c2345a50dad2b101aa61974057f51193dc791de8bf5407b95 [root@docker01 ~]# netstat -lnpt | grep 80 tcp 0 0 192.168.81.100:80 0.0.0.0:* LISTEN 111264/docker-proxy tcp6 0 0 :::8080 3.3.随机端口随机端口默认从32768开始,内核默认指定的可以修改 [root@docker01 ~]# sysctl -a | grep ipv4|grep range net.ipv4.ip_local_port_range = 32768 60999 扩展:nginx负载均衡与后端服务器连接时也使用随机端口,因此最多可以支持5w个并发,想增大并发量就是多增加几个ip,在dns上面设置例如华北用户走这个ip,华南用户走下一个ip,这样并发就高了,cdn也是这种原理。 [root@docker01 ~]# docker run -d -p ::80 nginx 6519668febb07a832ce1d92fe744e9d9cb4099a580ead6b8e7ced650c14eebff [root@docker01 ~]# netstat -lnpt | grep docker tcp 0 0 192.168.81.100:80 0.0.0.0:* LISTEN 111264/docker-proxy tcp6 0 0 :::8080 :::* LISTEN 100300/docker-proxy tcp6 0 0 :::32768 :::* LISTEN 113247/docker-proxy ```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200901104341587.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk1MzY1OA==,size_16,color_FFFFFF,t_70#pic_center) |
CopyRight 2018-2019 实验室设备网 版权所有 |